package com.ljk.util.pdf.data;

import com.itextpdf.text.*;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.ColumnText;
import com.itextpdf.text.pdf.PdfPageEventHelper;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.IOException;

public class PageEvent extends PdfPageEventHelper {
    /** 基础字体对象 */
    private BaseFont bf;

    /** 利用基础字体生成的字体对象，一般用于生成中文文字 */
    private Font fontDetail = null;

    public BaseFont getBf() {
        //设置分页页眉页脚字体
        try {
            if (bf == null) {
                bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", false);
            }
        } catch (DocumentException | IOException e) {
            e.printStackTrace();
        }
        return bf;
    }

    public Font getFontDetail() {
        //设置分页页眉页脚字体
        if (fontDetail == null) {
            fontDetail = new Font(getBf(), 10, Font.NORMAL);// 数据体字体
        }
        return fontDetail;
    }

    /**
     * 在一个页面写入完成后触发
     */
    @Override
    public void onEndPage(PdfWriter writer, Document doc) {
        Font headFont =getFontDetail();
        //添加标题文本
        StringBuilder underline = new StringBuilder();
        for (int i = 0; i < 116; i++) {
            underline.append("_");
        }
        Phrase contentPh = new Phrase("这是是页眉", headFont);
//        Phrase underlinePh = new Phrase(underline.toString(), headFont);
        Phrase pageNumberPh = new Phrase(String.valueOf(doc.getPageNumber()), headFont);
//        float center = doc.getPageSize().getRight() / 2;//页面的水平中点
        float center = 20;//页面的水平中点
        float top = doc.getPageSize().getTop() - 36;
        float bottom = doc.getPageSize().getBottom() + 36;

        /* 参数xy是指文本显示的页面上的哪个店。alignment指文本在坐标点的对齐方式 */
        ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_CENTER, contentPh, center, top, 0); //页眉
//        ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_CENTER, underlinePh, center, top - 3, 0); //页眉
        ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_CENTER, pageNumberPh, center, bottom, 0); //页码
    }
}
